package com.bto.solar.work.utils;

import cn.hutool.core.lang.UUID;
import cn.hutool.core.lang.id.NanoId;
import cn.hutool.core.util.IdUtil;

/**
 * ID生成器工具类
 * 
 * @author ruoyi
 */
public class IdUtils
{
    /**
     * 获取随机UUID
     * 
     * @return 随机UUID
     */
    public static String randomUUID()
    {
        return UUID.randomUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线
     * 
     * @return 简化的UUID，去掉了横线
     */
    public static String simpleUUID()
    {
        return UUID.randomUUID().toString(true);
    }

    /**
     * 获取随机UUID，使用性能更好的ThreadLocalRandom生成UUID
     * 
     * @return 随机UUID
     */
    public static String fastUUID()
    {
        return UUID.fastUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线，使用性能更好的ThreadLocalRandom生成UUID
     * 
     * @return 简化的UUID，去掉了横线
     */
    public static String fastSimpleUUID()
    {
        return UUID.fastUUID().toString(true);
    }

    public static String fromString(String name){
        return UUID.fromString(name).toString();
    }

    public static String fastUUIDWithPrefix(String prefix){
        if(StringUtils.isBlank(prefix)){
            throw new IllegalArgumentException("Invalid prefix");
        }
        StringBuffer uuid = new StringBuffer();
        uuid.append(prefix);
        uuid.append("-");
        uuid.append(fastUUID());
        return uuid.toString();
    }


    public static String nanoId(int size , char[] alphabet) {
        return NanoId.randomNanoId(null , alphabet , size);
    }


    public static Long fastSnowId(){
        return IdUtil.getSnowflakeNextId();
    }


}
